﻿using King.Automation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace g {
    public class Program {
        public static int Main(string[] args) {
            return ComandConsoleApplication.EntryPoint(args);
        }
    }

    /// <summary>
    /// Custom Search Engine definitions.
    /// </summary>
    [CommandGroup]
    public abstract class EngineCommand : Command {

        public EngineCommand(params object[] arguments)
            : base(arguments) {
        }
    }

    public sealed class EngineDetails : EngineCommand {

        [Command]
        public EngineDetails() {
        }
    }
    public sealed class EngineList : EngineCommand {

        [Command]
        public EngineList() {
        }
    }
    public sealed class EngineCreate : EngineCommand {

        [Command]
        public EngineCreate(
            string title,
            string description) {
        }
    }
    public sealed class EngineDelete : EngineCommand {

        [Command]
        public EngineDelete() {
        }
    }

    /// <summary>
    /// Custom Search Engine site definitions.
    /// </summary>
    [CommandGroup]
    public abstract class SiteCommand : Command {

        public SiteCommand(params object[] arguments)
            : base(arguments) {
        }
    }
    public sealed class SiteList : SiteCommand {

        [Command]
        public SiteList(
            string engine = null) {
        }
    }
    public sealed class SiteAdd : SiteCommand {

        [Command]
        public SiteAdd(
            string engine,
            string site,
            bool exclude = false,
            bool demote = false)
            : base(site, engine) {
        }
    }
    public sealed class SiteRemove : SiteCommand {

        [Command]
        public SiteRemove(
            string engine) {
        }
    }
}
